Computer networking technology allows execution of complicated computing tasks by sharing the work among the various hardware resources within the network. This resource sharing facilitates computing tasks that were previously too burdensome or impracticable to complete. For example, the term “big data” has been used to describe data sets that are extremely large and complex, making them difficult to process. Many of the systems for analyzing these datasets require a sophisticated network of machines to store and process the data. Consequently, many of the solutions that target big data workloads rely on shared network resources in the form of virtual machines in a cloud computing environment.
In order to efficiently manage the sharing of these complex computing tasks, available network resources should be intelligently allocated and hosts selected that are able to perform the computing task. Consequently, there is a need to logically select the hosts for the virtual machines such that the utilization of the network resources is maximized while minimizing the cost.